Historically, resource management and contention between resources were handled through central management facilities, which favored one request over another or through any of a multitude of other contention handling methods. This management scheme normally took the form of a central arbitration facility which requesters would raise requests to, while the arbitration facility would determine points of contention and return grants to the appropriate requester, effectively giving it priority to use a shared facility.
Shared management of resources within a computer system is undoubtedly an area of growing importance with the increasing complexity of the computing environment. There are many examples of prior art relevant to the present subject matter. U.S. Pat. No. 4,399,504, entitled Method and Means for the Sharing of Data Resources in a Multiprocessing, Multiprogramming Environment, issued to Obermarck et al., and U.S. Pat. No. 4,604,694, entitled Shared and Exclusive Access Control, issued to Hough, and U.S. Pat. No. 5,414,856, entitled Multiprocessor Shared Resource Management System Implemented as a Virtual Task in One of the Processors, issued to Yokota are three examples employing methods of locking and sharing computer system resources required by applications or tasks running in a multiprocessing environment. These applications focus primarily on the software interaction with the operating system and employ programming facilities to implement the inventions.
U.S. Pat. No. 5,115,499, entitled Shared Computer Resource Allocation System Having Apparatus for Informing a Requesting Computer of the Identity and Busy/Idle Status of Shared Resources by Command Code, issued to Stiffler et al., teaches a resource allocation system to permit each processor in a multiprocessing environment to gain temporary exclusive control of a resource to accomplish a particular task. This invention employs both hardware and software facilities wherein the hardware facilities permit a test-and-set procedure to interrogate the status of a resource and provide a means for locking said resource on behalf of a requesting processor.
U.S. Pat. No. 5,887,160, entitled Method and Apparatus for Communicating Integer and Floating Point Data Over a Shared Data Path in a Single Instruction Pipeline Processor, issued to Lauritzen et al., demonstrates a processor pipeline data flow in wherein the same data path is used to convey integer and floating point results to and from various stages of the pipeline without the need for the Floating Point and Integer Units to employ separate and distinct data flows.
While all of the aforementioned inventions teach various methods related to resource management in a computer system, they individually and collectively, fail to provide a hardware means for arbitrating and managing general purpose, shared data paths in high frequency, large scale SMP systems.
With the growth in the number of requesters, resources, data sources, data sinks, increasing chip density, and increasing clock frequency, the level of interconnection in a system has become difficult at best to manage. Problems with wiring contention, timing issues, and space within a chip floorplan have driven the need for an alternative solution to this. This solution must be scalable and does not result in other problems in a system design or performance.